From: Dan Winship Date: Fri, 19 Nov 2010 18:00:59 +0000 (-0500) Subject: panel: fix up calendar-vs-menu handling on clock X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~9359 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=7d0eeef90a85598a2862695755d4635bda4485b3;p=gnome-shell.git panel: fix up calendar-vs-menu handling on clock Give the clock's right-click menu its own PopupMenuManager so that if you drop down another menu and then mouseover the clock it doesn't pop up the right-click menu. https://bugzilla.gnome.org/show_bug.cgi?id=634755 --- diff --git a/js/ui/panel.js b/js/ui/panel.js index fc4614dc5..e797a36f9 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -512,11 +512,14 @@ ClockButton.prototype = { _onButtonPress: function(actor, event) { let button = event.get_button(); - if (button == 3 && - (!this._calendarPopup || !this._calendarPopup.isOpen)) + let menuShowing = this.menu.isOpen; + let calendarShowing = this._calendarPopup && this._calendarPopup.isOpen; + + if (menuShowing || (button == 3 && !calendarShowing)) this.menu.toggle(); else this._toggleCalendar(); + return true; }, closeCalendar: function() { @@ -525,15 +528,12 @@ ClockButton.prototype = { this._calendarPopup.hide(); - this.menu.isOpen = false; this.actor.remove_style_pseudo_class('pressed'); }, openCalendar: function() { this._calendarPopup.show(); - // simulate an open menu, so it won't appear beneath the calendar - this.menu.isOpen = true; this.actor.add_style_pseudo_class('pressed'); }, @@ -803,7 +803,8 @@ Panel.prototype = { this._clockButton = new ClockButton(); this._centerBox.add(this._clockButton.actor, { y_fill: true }); - this._menus.addMenu(this._clockButton.menu); + let clockMenuManager = new PopupMenu.PopupMenuManager(this); + clockMenuManager.addMenu(this._clockButton.menu); /* right */